package com.cowmooed.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 3D模型评估报告实体类
 * 对应数据库表：3d_model_evaluation_reports
 */
@Data
@Builder
@TableName("3d_model_evaluation_reports")
public class ModelEvaluationReport implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 报告唯一ID，主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 3D模型链接，非空字段
     */
    @TableField("model_3d_url")
    private String model3dUrl;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 报告标题，非空字段
     */
    @TableField("title")
    private String title;

    /**
     * 大模型生成的Markdown格式报告
     */
    @TableField("markdown_report")
    private String markdownReport;

    /**
     * 3D模型的切图数据或URL
     */
    @TableField("screenshot")
    private String screenshot;

    /**
     * 报告阅读状态（0=未读，1=已读）
     */
    @TableField("read_status")
    private Integer readStatus;

    /**
     * 报告生成时间（数据库存完报告的时间）
     */
    @TableField(value = "create_time")
    private LocalDateTime createTime;

    /**
     * 报告状态更新时间（如标记为已读的时间）
     */
    @TableField(value = "update_time")
    private LocalDateTime updateTime;

    /**
     * 阅读状态枚举
     */
    public enum ReadStatus {
        UNREAD(0),
        READ(1);
        
        private final Integer value;
        
        ReadStatus(Integer value) {
            this.value = value;
        }
        
        public Integer getValue() {
            return value;
        }
    }
}